import { useGet, usePost, usePut, useDelete } from './request';
import type { UserInfo, TaskInfo } from '../types/common';
import type { PageParams, PageResult, ResultData } from '../types/api';

/**
 * 用户相关 API
 */
export const userApi = {
  /**
   * 获取用户列表
   * @param params - 分页参数
   * @returns 用户列表请求 hook
   */
  useGetUserList: (params?: PageParams) => {
    return useGet<PageResult<UserInfo>>('/users', params);
  },

  /**
   * 获取用户详情
   * @param userId - 用户ID
   * @returns 用户详情请求 hook
   */
  useGetUserDetail: (userId: string) => {
    return useGet<UserInfo>(`/users/${userId}`);
  },

  /**
   * 创建用户
   * @returns 创建用户请求 hook
   */
  useCreateUser: () => {
    return usePost<UserInfo, Partial<UserInfo>>('/users');
  },

  /**
   * 更新用户
   * @param userId - 用户ID
   * @returns 更新用户请求 hook
   */
  useUpdateUser: (userId: string) => {
    return usePut<UserInfo, Partial<UserInfo>>(`/users/${userId}`);
  },

  /**
   * 删除用户
   * @returns 删除用户请求 hook
   */
  useDeleteUser: () => {
    return useDelete<boolean>('/users');
  },
};

/**
 * 任务相关 API
 */
export const taskApi = {
  /**
   * 获取任务列表
   * @param params - 分页参数
   * @returns 任务列表请求 hook
   */
  useGetTaskList: (params?: PageParams) => {
    return useGet<PageResult<TaskInfo>>('/tasks', params);
  },

  /**
   * 获取任务详情
   * @param taskId - 任务ID
   * @returns 任务详情请求 hook
   */
  useGetTaskDetail: (taskId: string) => {
    return useGet<TaskInfo>(`/tasks/${taskId}`);
  },

  /**
   * 创建任务
   * @returns 创建任务请求 hook
   */
  useCreateTask: () => {
    return usePost<TaskInfo, Partial<TaskInfo>>('/tasks');
  },

  /**
   * 更新任务
   * @param taskId - 任务ID
   * @returns 更新任务请求 hook
   */
  useUpdateTask: (taskId: string) => {
    return usePut<TaskInfo, Partial<TaskInfo>>(`/tasks/${taskId}`);
  },

  /**
   * 删除任务
   * @returns 删除任务请求 hook
   */
  useDeleteTask: () => {
    return useDelete<boolean>('/tasks');
  },

  /**
   * 更新任务状态
   * @param taskId - 任务ID
   * @returns 更新任务状态请求 hook
   */
  useUpdateTaskStatus: (taskId: string) => {
    return usePut<TaskInfo, { status: string }>(`/tasks/${taskId}/status`);
  },
};

/**
 * 系统相关 API
 */
export const systemApi = {
  /**
   * 获取系统信息
   * @returns 系统信息请求 hook
   */
  useGetSystemInfo: () => {
    return useGet<{
      version: string;
      buildTime: string;
      environment: string;
    }>('/system/info');
  },

  /**
   * 获取系统统计数据
   * @returns 系统统计数据请求 hook
   */
  useGetSystemStats: () => {
    return useGet<{
      userCount: number;
      taskCount: number;
      activeUsers: number;
      todayVisits: number;
    }>('/system/stats');
  },

  /**
   * 获取系统监控数据
   * @returns 系统监控数据请求 hook
   */
  useGetSystemMonitor: () => {
    return useGet<{
      cpu: number;
      memory: number;
      disk: number;
      network: number;
    }>('/system/monitor');
  },
};

/**
 * 示例：自定义请求服务
 * 展示如何使用标准的请求格式
 * @param params - 请求参数
 * @param paramss - 额外参数
 * @returns Promise<ResultData>
 */
export const setTaskagvCode = async (
  params: string, 
  paramss: string
): Promise<ResultData> => {
  // 模拟请求延迟
  await new Promise(resolve => setTimeout(resolve, 1000));
  
  // 模拟请求逻辑
  return {
    code: 200,
    message: '操作成功',
    data: {
      agvCode: params,
      taskCode: paramss,
      mode: 'agvStatueUpdate',
      timestamp: new Date().toISOString(),
    },
    success: true,
  };
};